package com.lyf.scm.plan.api.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * @Author: huangtao
 * @Description:
 * @Date: create in 2020/7/30
 */
@Data
@ApiModel("销售计划页面数据DTO")
public class SalesPlanInfoDTO {

    @ApiModelProperty("渠道")
    private String channel;

    @ApiModelProperty("子渠道")
    private String subChannel;

    @ApiModelProperty("品类")
    private String category;

    @ApiModelProperty("大品类")
    private String priCategory;

    @ApiModelProperty("中品类")
    private String secCategory;

    @ApiModelProperty("小品类")
    private String terCategory;

    @ApiModelProperty("区域")
    private String area;

    @ApiModelProperty("省")
    private String province;

    @ApiModelProperty("市")
    private String city;

    @ApiModelProperty("区")
    private String county;

    @ApiModelProperty("门店")
    private String store;

    @ApiModelProperty("商品sku")
    private String skuCode;

    @ApiModelProperty("单位")
    private String unit;

    @ApiModelProperty("平均价格")
    private BigDecimal averagePrice;

    @ApiModelProperty("商品name")
    private String skuName;

    @ApiModelProperty("商品type")
    private String skuType;

    @ApiModelProperty("销售计划金额名称")
    private String salesPlanAmountLabel = "销售计划金额";
    @ApiModelProperty("预测计划金额名称")
    private String forecastPlanAmountLabel = "预测计划金额";
    @ApiModelProperty("销售计划量名称")
    private String salesPlanQtyLabel = "销售计划量";
    @ApiModelProperty("预测计划量名称")
    private String forecastPlanQtyLabel = "预测计划量";
    @ApiModelProperty("安全库存名称")
    private String safetyStockQtyLabel = "安全库存量";
    @ApiModelProperty("确认量名称")
    private String confirmQtyLabel = "确认量";
    @ApiModelProperty("上次确认量名称")
    private String lastConfirmQtyLabel = "上次确认量";
    @ApiModelProperty("预约在途采购量名称")
    private String reservePurchaseQtyLabel = "预约在途采购量";
    @ApiModelProperty("实际销量名称")
    private String actualSalesQtyLabel = "实际销量";
    @ApiModelProperty("未履约采购量名称")
    private String noFulfilPurchaseQtyLabel = "未履约采购量";
    @ApiModelProperty("当前实时库存名称")
    private String realTimeInventoryLabel = "当前实时库存";

    @ApiModelProperty("销售计划金额集合")
    private List<BigDecimal> salesPlanAmount;
    @ApiModelProperty("预测计划金额集合")
    private List<BigDecimal> forecastPlanAmount;
    @ApiModelProperty("销售计划量集合")
    private List<BigDecimal> salesPlanQty;
    @ApiModelProperty("预测计划量集合")
    private List<BigDecimal> forecastPlanQty;
    @ApiModelProperty("安全库存集合")
    private List<BigDecimal> safetyStockQty;
    @ApiModelProperty("确认量集合")
    private List<BigDecimal> confirmQty;
    @ApiModelProperty("上次确认量集合")
    private List<BigDecimal> lastConfirmQty;
    @ApiModelProperty("预约在途采购量集合")
    private List<BigDecimal> reservePurchaseQty;
    @ApiModelProperty("实际销量集合")
    private List<BigDecimal> actualSalesQty;
    @ApiModelProperty("未履约采购量集合")
    private List<BigDecimal> noFulfilPurchaseQty;
    @ApiModelProperty("当前实时库存集合")
    private List<BigDecimal> realTimeInventory;

    @ApiModelProperty("日期集合")
    private List<String> dateList;

    @ApiModelProperty("渠道code")
    private String channelCode;

    @ApiModelProperty("子渠道code")
    private String subChannelCode;

    @ApiModelProperty("大品类code")
    private String priCategoryCode;

    @ApiModelProperty("中品类code")
    private String secCategoryCode;

    @ApiModelProperty("小品类code")
    private String terCategoryCode;

    @ApiModelProperty("省份code")
    private String provinceCode;

    @ApiModelProperty("城市code")
    private String cityCode;

    @ApiModelProperty("区/县code")
    private String countyCode;

    @ApiModelProperty("门店code")
    private String storeCode;

    @ApiModelProperty("其他渠道销售计划单号")
    private String salesPlanOtherNo;

    @ApiModelProperty("计划活动编码")
    private String salesPlanActivityNo;

    @ApiModelProperty("计划状态（0：已取消，1：已确认）")
    private Integer status;

    @ApiModelProperty("计划类型（1-经销中心营销计划、2-云商营销计划、3-新开店计划（直营门店）、4-新开店计划（加盟门店）、5-新品铺货计划（直营门店）、6-新品铺货计划（云商）、7-新品铺货计划（APP）、8-新品铺货计划（经销中心））")
    private String type;

    @ApiModelProperty("确认状态(0:未确认,1:已确认)")
    private Integer confirmedStatus;

    @ApiModelProperty("渠道负责人确认状态(0:未确认,1:已确认)")
    private Integer channelConfirmedStatus;

    @ApiModelProperty("全渠道负责人确认状态(0:未确认,1:已确认)")
    private Integer allchannelConfirmedStatus;

    @ApiModelProperty("计划状态集合")
    private List<Integer> statusList;

    @ApiModelProperty("计划类型集合")
    private List<String> typeList;

    @ApiModelProperty("确认状态集合")
    private List<Integer> confirmedStatusList;

    @ApiModelProperty("渠道负责人确认状态集合")
    private List<Integer> channelConfirmedStatusList;

    @ApiModelProperty("全渠道负责人确认状态集合")
    private List<Integer> allchannelConfirmedStatusList;

    @ApiModelProperty("最晚到货日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date latestArrivalDate;

    @ApiModelProperty("用户级别（1：导入人、2：渠道负责人、3：全渠道负责人）")
    private Integer level;

    @ApiModelProperty("其他渠道类型集合(高级搜索)")
    private List<SalesPlanOtherTypeDTO> otherTypeList;

    @ApiModelProperty("其他渠道类型集合(导入)")
    private List<SalesPlanOtherTypeDTO> otherImpTypeList;

    @JsonIgnore
    @ApiModelProperty("分组参数")
    private String condition;

    @ApiModelProperty("计划开始日期")
    private Date planStartDate;

    @ApiModelProperty("计划结束日期")
    private Date planEndDate;

    @ApiModelProperty("当前实时库存")
    private BigDecimal realTimeInventoryQty;
}
